import 'Animal.dart';

// 猫类【子类】 特点1： 单继承，一个子只能有一个父类
class Cat extends Animal {
  // 子类自定义构造函数且通过super调用父类构造函数
  Cat(String name) : super(name);

  void walk() {
    print("walk");
  }

  // 特点4：子类重写父类方法，也可通过super调用父类方法
  @override
  void eat() {
    print("这是猫类自己的一些eat事情...");
    super.eat();
  }
}

// 鱼类【子类】 特点1： 单继承，一个子只能有一个父类
class Fish extends Animal {
  // 子类自定义构造函数且通过super调用父类构造函数
  Fish(String name) : super(name);

  void swim() {
    print("swim");
  }
}

// 入口函数
void main() {
  // 创建猫
  Cat cat = Cat("tom");
  print(cat.name);
  cat.eat();
  cat.walk();
  // 特点2： 子类无法调用父类的私有属性和方法 【父类和子类不能在同个文件中】
  // cat._run();  // 错误

  // 创建鱼
  Fish fish = Fish("小金鱼");
  print(fish.name);
  fish.eat();
  fish.swim();
}
